package config

import "os"

// Config 保存所有可配置项
// JWTSecret 用于签发和验证 JWT
type Config struct {
	Port            string // HTTP 服务端口
	MongoURI        string // MongoDB 连接地址
	MongoDB         string // 要操作的数据库名
	JWTSecret       string // JWT 签名密钥
	AccessKeyID     string
	SecretAccessKey string
	SmsAccount      string // 短信服务子账号
	SignName        string // 短信签名名称
	TOSEndpoint     string // 类似 "tos-cn-beijing.volcengineapi.com"
	TOSRegion       string // 如 "cn-beijing"
	TOSBucket       string // 你的桶名
}

// defaultEnv：如果环境变量 key 存在就返回它，否则返回 def
func defaultEnv(key, def string) string {
	if v := os.Getenv(key); v != "" {
		return v
	}
	return def
}

// Load 从环境变量加载配置，若没设置则使用默认值
func Load() Config {
	dbName := defaultEnv("MONGO_DB", "zwAI")
	return Config{
		Port:            defaultEnv("PORT", "8080"),
		MongoURI:        defaultEnv("MONGO_URI", "mongodb://zwUser:zwPass123@47.115.228.25:27017/"+dbName+"?authSource="+dbName),
		MongoDB:         dbName,
		JWTSecret:       defaultEnv("JWT_SECRET", "your-default-jwt-secret"),
		AccessKeyID:     defaultEnv("VOLC_AK", "AKLTYmFlNGYwNTM3NDEyNGMyYWE0MmZlZTgxNjIyMDAxNWM"),
		SecretAccessKey: defaultEnv("VOLC_SK", "TTJabE9UVXlNVGczWW1RNE5HTmxOamt4WlRnM1l6SXhZbUk0TVRsa1l6SQ=="),
		SmsAccount:      defaultEnv("VOLC_SMS_ACCOUNT", "84bdbf8d"),
		SignName:        defaultEnv("VOLC_SMS_SIGN", "佼晓山网络"),
		TOSEndpoint:     defaultEnv("TOS_ENDPOINT", "https://tos-cn-beijing.volces.com"),
		TOSRegion:       defaultEnv("TOS_REGION", "cn-beijing"),
		TOSBucket:       defaultEnv("TOS_BUCKET", "next"),
	}
}
